/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package desarrollosoft.ghce.dao.implementaciones;

import desarrollosoft.ghce.dao.interfaces.IResultadoComponenteDAO;
import desarrollosoft.ghce.entidades.EstudioLaboratorio;
import desarrollosoft.ghce.entidades.ResultadoComponente;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author ariel
 */
@Repository("resultadoComponenteDAO")
public class ResultadoComponenteDAO implements IResultadoComponenteDAO {

    @PersistenceContext
    private EntityManager entityManager;
    
    @Override
    public List<ResultadoComponente> traerResultados(EstudioLaboratorio estudioLaboratorio) {
        Query consulta = entityManager.createQuery(
                "SELECT r FROM ResultadoComponente r JOIN r.estudioLaboratorio e WHERE e = :estudioLaboratorio"
        );
        consulta.setParameter("estudioLaboratorio", estudioLaboratorio);
        return consulta.getResultList();
    }

    @Override
    @Transactional(propagation = Propagation.MANDATORY)
    public void guardarResultados(List<ResultadoComponente> listaResultadoComponentes) throws Exception {
        for (ResultadoComponente resultadoComponente : listaResultadoComponentes) {
            entityManager.merge(resultadoComponente);
        }
    }
    
}
